package br.com.assemble.hermeserp.model.pojos.pessoas;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import br.com.assemble.hermeserp.ejb.annotation.DaoClass;
import br.com.assemble.hermeserp.model.BasePojo;
import br.com.assemble.hermeserp.model.pojos.comercial.Qualificacao;


/**
 * The persistent class for the PESSOAS_JURIDICAS database table.
 * 
 */
@Entity
@Table(name="PESSOAS_JURIDICAS")
@DaoClass(value="PessoaJuridicaDao", pu="hermes-pu")
public class PessoaJuridica extends BasePojo implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="PJU_IDENTIFY", unique=true, nullable=false)
	private BigInteger pjuIdentify;

	@Column(name="PJU_CNPJ", nullable=false)
	private BigInteger pjuCnpj;

	@Column(name="PJU_CONTRIBUINTE_ICMS", nullable=false, length=1)
	private Integer pjuContribuinteIcms;

	@Column(name="PJU_IE_UF", nullable=false, length=2)
	private String pjuIeUf;

	@Column(name="PJU_INSCRICAO_ESTADUAL")
	private BigInteger pjuInscricaoEstadual;

	@Column(name="PJU_REVENDA", nullable=false, length=1)
	private Integer pjuRevenda;

	//bi-directional many-to-one association to Contato
	@OneToMany(mappedBy="pessoaJuridica")
	private List<Contato> contatoCollection;

	//bi-directional one-to-one association to Pessoa
	@OneToOne(mappedBy="pessoaJuridica", fetch=FetchType.LAZY)
	private Pessoa pessoa;

	//bi-directional one-to-one association to Empresa
	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="PJU_IDENTIFY", nullable=false, insertable=false, updatable=false)
	private Empresa empresa;

	//bi-directional many-to-one association to Qualificacao
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="QUA_IDENTIFY", nullable=false)
	private Qualificacao qualificacao;

    public PessoaJuridica() {
    }

	public BigInteger getPjuIdentify() {
		return this.pjuIdentify;
	}

	public void setPjuIdentify(BigInteger pjuIdentify) {
		this.pjuIdentify = pjuIdentify;
	}

	public BigInteger getPjuCnpj() {
		return this.pjuCnpj;
	}

	public void setPjuCnpj(BigInteger pjuCnpj) {
		this.pjuCnpj = pjuCnpj;
	}

	public Integer getPjuContribuinteIcms() {
		return this.pjuContribuinteIcms;
	}

	public void setPjuContribuinteIcms(Integer pjuContribuinteIcms) {
		this.pjuContribuinteIcms = pjuContribuinteIcms;
	}

	public String getPjuIeUf() {
		return this.pjuIeUf;
	}

	public void setPjuIeUf(String pjuIeUf) {
		this.pjuIeUf = pjuIeUf;
	}

	public BigInteger getPjuInscricaoEstadual() {
		return this.pjuInscricaoEstadual;
	}

	public void setPjuInscricaoEstadual(BigInteger pjuInscricaoEstadual) {
		this.pjuInscricaoEstadual = pjuInscricaoEstadual;
	}

	public Integer getPjuRevenda() {
		return this.pjuRevenda;
	}

	public void setPjuRevenda(Integer pjuRevenda) {
		this.pjuRevenda = pjuRevenda;
	}

	public List<Contato> getContatoCollection() {
		return this.contatoCollection;
	}

	public void setContatoCollection(List<Contato> contatoCollection) {
		this.contatoCollection = contatoCollection;
	}
	
	public Pessoa getPessoa() {
		return this.pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	public Empresa getEmpresa() {
		return this.empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	public Qualificacao getQualificacao() {
		return this.qualificacao;
	}

	public void setQualificacao(Qualificacao qualificacao) {
		this.qualificacao = qualificacao;
	}
	
}